package biz.datalk.industrialland.admin.modules.system.operator;


import biz.datalk.industrialland.mbg.pojo.po.SysDict;
import biz.datalk.industrialland.mbg.pojo.po.SysDictItem;

import java.util.List;
import java.util.Map;

/**
 * 系统数据字典与字典条目缓存管理器
 * @author ZhouYi
 * @date 2020/6/10 14:21
 * @description description
 * @note note
 */
public interface SysDictAndItemCacheManager {

	// ===== ===== ===== ===== [常量] ===== ===== ===== ===== //



	// ===== ===== ===== ===== [静态变量] ===== ===== ===== ===== //



	// ===== ===== ===== ===== [操作方法-全局操作] ===== ===== ===== ===== //

	/**
	 * 清除该管理器的所有缓存
	 * @return {@code Long} 被移除的缓存数量
	 * @author ZhouYi
	 * @date 2020/6/10 18:03
	 * @description description
	 * @note note
	 */
	Long clearAll();

	// ===== ===== ===== ===== [操作方法-数据字典定义相关] ===== ===== ===== ===== //

	/**
	 * 获取数据字典定义
	 * @param dictId 字典ID，定位条件之一（优先）
	 * @param dictCode 字典码，定位条件之一
	 * @return {@code SysDict} 获取到的数据字典定义
	 * @author ZhouYi
	 * @date 2020/6/10 18:01
	 * @description description
	 * @note note
	 */
	SysDict getSysDict(String dictId, String dictCode);

	/**
	 * 移除数据字典缓存组
	 * @param dictId 字典ID，定位条件之一（优先）
	 * @param dictCode 字典码，定位条件之一
	 * @return {@code Long} 被移除的缓存数量
	 * @author ZhouYi
	 * @date 2020/6/10 18:01
	 * @description description
	 * @note note
	 */
	Long removeSysDictCacheGroup(String dictId, String dictCode);

	/**
	 * 批量移除多个数据字典缓存组
	 * @param dictIdList 字典ID列表，定位条件之一（优先）
	 * @param dictCodeList 字典码列表，定位条件之一
	 * @return {@code Long} 被移除的缓存数量
	 * @author ZhouYi
	 * @date 2020/6/10 18:00
	 * @description description
	 * @note note
	 */
	Long batchRemoveSysDictCacheGroup(List<String> dictIdList, List<String> dictCodeList);

	// ===== ===== ===== ===== [操作方法-数据字典条目相关] ===== ===== ===== ===== //

	/**
	 * 获取某一组字典条目列表
	 * @param dictId 字典ID，定位条件之一（优先）
	 * @param dictCode 字典码，定位条件之一
	 * @return {@code List<SysDictItem>} 获取到的条目对象列表
	 * @author ZhouYi
	 * @date 2020/6/10 18:00
	 * @description description
	 * @note note
	 */
	List<SysDictItem> getSysDictItemList(String dictId, String dictCode);

	/**
	 * 获取某一组字典条目组成的Map，其中Key为ITEM_VALUE，Value为ITEM_TEXT
	 * @param dictId 字典ID，定位条件之一（优先）
	 * @param dictCode 字典码，定位条件之一
	 * @return {@code Map<String,String>} 获取到的Map
	 * @author ZhouYi
	 * @date 2020/6/10 17:59
	 * @description description
	 * @note note
	 */
	Map<String, String> getSysDictItemMap(String dictId, String dictCode);

	/**
	 * 移除数据字典条目缓存组
	 * @param dictId 字典ID，定位条件之一（优先）
	 * @param dictCode 字典码，定位条件之一
	 * @return {@code Long} 被移除的缓存数量
	 * @author ZhouYi
	 * @date 2020/6/10 17:57
	 * @description description
	 * @note note
	 */
	Long removeSysDictItemCacheGroup(String dictId, String dictCode);

	/**
	 * 批量移除多个数据字典条目缓存组
	 * @param dictIdList 字典ID列表，定位条件之一（优先）
	 * @param dictCodeList 字典码列表，定位条件之一
	 * @return {@code int} 被移除的缓存数量
	 * @author ZhouYi
	 * @date 2020/6/10 17:56
	 * @description description
	 * @note note
	 */
	Long batchRemoveSysDictItemCacheGroup(List<String> dictIdList, List<String> dictCodeList);


}
